#define _CRT_SECURE_NO_WARNINGS 1
//  Definition for singly - linked list.
//  struct ListNode {
//    *int val;
//    *struct ListNode* next;
//}
//struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
//    struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* prev = head;
//    prev->next = NULL;
//    while (list1 && list2)
//    {
//        if (list1->val < list2->val)
//        {
//            prev->next = list1;
//            list1 = list1->next;
//            prev = prev->next;
//        }
//        else
//        {
//            prev->next = list2;
//            list2 = list2->next;
//            prev = prev->next;
//        }
//    }
//    if (list1)
//    {
//        prev->next = list1;
//    }
//    if (list2)
//    {
//        prev->next = list2;
//    }
//    struct ListNode* phead = head->next;
//    free(head);
//    head = NULL;
//    return phead;
//}